class LocalCache {
  /**
   * 设置缓存
   * @param key
   * @param value
   */
  setCache(key: string, value: any) {
    window.localStorage.setItem(key, value)
  }

  /**
   * 获取缓存
   * @param key
   */
  getCache(key: string) {
    // obj => string => obj
    const value = window.localStorage.getItem(key)
    if (value) {
      return value
    }
  }

  /**
   * 删除缓存
   * @param key
   */
  removeCache(key: string) {
    window.localStorage.removeItem(key)
  }

  /**
   * 清空缓存
   */
  clearCache() {
    window.localStorage.clear()
  }

  /**
   * 获取缓存中的所有数据
   * @param keyName
   * @param valueName
   */
  getAllCache<T,V>(keyName: T, valueName: V){
    const len: number = localStorage.length;  // 获取长度
    const arr = new Array(); // 定义数据集
    for(let i = 0; i < len; i++) {
        // 获取key 索引从0开始
        if(localStorage.key(i) != null){
          const key: string = localStorage.key(i) as string
          const value: string = this.getCache(key) as string; // 获取key对应的值
          
        // 自定义键类型，放进数组
        const map = new Map()
        map.set(keyName,key)
        map.set(valueName,value)
        arr.push(map)
      }
    }
    
    return arr
  }
}

export default new LocalCache()
